import { http } from "@/utils/http";

/** 统一响应格式 */
export interface ApiResponse<T = any> {
  /** 状态码 */
  code: number;
  /** 响应消息 */
  message: string;
  /** 响应数据 */
  data?: T;
  /** 时间戳 */
  timestamp?: number;
}

/** SEO配置信息 */
export interface SeoConfig {
  /** 网站名称 */
  siteName: string;
  /** 网站描述 */
  siteDescription: string;
  /** 网站关键词(逗号分隔) */
  siteKeywords: string;
  /** 网站作者 */
  siteAuthor: string;
  /** 网站Logo URL */
  siteLogo: string;
  /** 网站Favicon URL */
  siteFavicon: string;
  /** robots meta标签内容 */
  robotsMetaContent: string;
  /** 是否启用Open Graph */
  openGraphEnabled: boolean;
  /** Open Graph类型 */
  openGraphType: string;
  /** 是否启用Twitter Card */
  twitterCardEnabled: boolean;
  /** Twitter Card类型 */
  twitterCardType: string;
  /** Twitter账号 */
  twitterSite: string;
}

/**
 * 获取SEO配置信息
 * 用于前端生成meta标签、Open Graph标签和Twitter Card
 */
export const getSeoConfig = () => {
  return http.request<ApiResponse<SeoConfig>>("get", "/api/seo/config");
};

/**
 * 获取Sitemap.xml
 * 获取网站地图XML文件
 */
export const getSitemap = () => {
  return http.request<string>("get", "/sitemap.xml", {
    headers: {
      Accept: "application/xml"
    }
  });
};

/**
 * 获取Robots.txt
 * 获取robots.txt文件
 */
export const getRobotsTxt = () => {
  return http.request<string>("get", "/robots.txt", {
    headers: {
      Accept: "text/plain"
    }
  });
};

/**
 * 获取文章结构化数据
 * 获取文章的结构化数据(Schema.org JSON-LD格式)
 * @param articleId 文章ID
 */
export const getArticleStructuredData = (articleId: number) => {
  return http.request<ApiResponse<string>>(
    "get",
    `/api/seo/article/${articleId}/structured-data`
  );
};

/**
 * 获取网站结构化数据
 * 获取网站的结构化数据(Schema.org JSON-LD格式),用于首页和其他页面
 */
export const getWebsiteStructuredData = () => {
  return http.request<ApiResponse<string>>(
    "get",
    "/api/seo/website/structured-data"
  );
};
